home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / pacland.c < prev    next >
C/C++ Source or Header  |  2000-04-04  |  19KB  |  509 lines

  1. /***************************************************************************
  2.  
  3. PacLand memory map (preliminary)
  4.  
  5. Ernesto Corvi
  6. ernesto@imagina.com
  7.  
  8. Main CPU:
  9. 0000-1fff Character ram ( video ram ) + colorram
  10. 2000-3000 spriteram?
  11. 3000-3800 RAM
  12. 3800-3801 Background 1 scrolling
  13. 3a00-3a01 Background 2 scrolling
  14. 3c00-3c00 Bank and ROM Selector
  15. 4000-6000 Banked ROMs
  16. 6800-6bff Shared RAM with the MCU
  17. 8000-ffff ROM
  18.  
  19. MCU:
  20. 0000-0027 Internal registers, timers and ports.
  21. 0040-13ff RAM
  22. 1000-13ff Shared RAM with the Main CPU
  23. 8000-a000 MCU external ROM
  24. c000-cfff Namco Sound ?
  25. d000-d003 Dip Switches/Joysticks
  26. f000-ffff MCU internal ROM
  27.  
  28. ***************************************************************************/
  29.  
  30. #include "driver.h"
  31. #include "vidhrdw/generic.h"
  32. #include "cpu/m6800/m6800.h"
  33.  
  34.  
  35. static unsigned char *sharedram1;
  36.  
  37. WRITE_HANDLER( pacland_scroll0_w );
  38. WRITE_HANDLER( pacland_scroll1_w );
  39. WRITE_HANDLER( pacland_bankswitch_w );
  40. void pacland_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  41. int pacland_vh_start(void);
  42. void pacland_vh_stop(void);
  43. void pacland_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  44.  
  45.  
  46. static READ_HANDLER( sharedram1_r )
  47. {
  48.     return sharedram1[offset];
  49. }
  50.  
  51. static WRITE_HANDLER( sharedram1_w )
  52. {
  53.     sharedram1[offset] = data;
  54. }
  55.  
  56. static WRITE_HANDLER( pacland_halt_mcu_w )
  57. {
  58.     if (offset == 0)
  59.         cpu_set_reset_line(1,CLEAR_LINE);
  60.     else
  61.         cpu_set_reset_line(1,ASSERT_LINE);
  62. }
  63.  
  64.  
  65. /* Stubs to pass the correct Dip Switch setup to the MCU */
  66. static READ_HANDLER( dsw0_r )
  67. {
  68.     /* Hi 4 bits = DSWA Hi 4 bits */
  69.     /* Lo 4 bits = DSWB Hi 4 bits */
  70.     int r = readinputport( 0 );
  71.     r &= 0xf0;
  72.     r |= ( readinputport( 1 ) >> 4 ) & 0x0f;
  73.     return ~r; /* Active Low */
  74. }
  75.  
  76. static READ_HANDLER( dsw1_r )
  77. {
  78.     /* Hi 4 bits = DSWA Lo 4 bits */
  79.     /* Lo 4 bits = DSWB Lo 4 bits */
  80.     int r = ( readinputport( 0 ) & 0x0f ) << 4;
  81.     r |= readinputport( 1 ) & 0x0f;
  82.     return ~r; /* Active Low */
  83. }
  84.  
  85. static WRITE_HANDLER( pacland_coin_w )
  86. {
  87.     coin_lockout_global_w(0,data & 1);
  88.     coin_counter_w(0,~data & 2);
  89.     coin_counter_w(1,~data & 4);
  90. }
  91.  
  92. static WRITE_HANDLER( pacland_led_w )
  93. {
  94.     osd_led_w(0,data >> 3);
  95.     osd_led_w(1,data >> 4);
  96. }
  97.  
  98.  
  99. static struct MemoryReadAddress readmem[] =
  100. {
  101.     { 0x0000, 0x1fff, videoram_r },
  102.     { 0x2000, 0x37ff, MRA_RAM },
  103.     { 0x4000, 0x5fff, MRA_BANK1 },
  104.     { 0x6800, 0x68ff, namcos1_wavedata_r },        /* PSG device, shared RAM */
  105.     { 0x6800, 0x6bff, sharedram1_r },
  106.     { 0x7800, 0x7800, MRA_NOP },    /* ??? */
  107.     { 0x8000, 0xffff, MRA_ROM },
  108.     { -1 }    /* end of table */
  109. };
  110.  
  111. static struct MemoryWriteAddress writemem[] =
  112. {
  113.     { 0x0000, 0x2000, videoram_w, &videoram, &videoram_size },
  114.     { 0x2000, 0x37ff, MWA_RAM },
  115.     { 0x2700, 0x27ff, MWA_RAM, &spriteram, &spriteram_size },
  116.     { 0x2f00, 0x2fff, MWA_RAM, &spriteram_2 },
  117.     { 0x3700, 0x37ff, MWA_RAM, &spriteram_3 },
  118.     { 0x3800, 0x3801, pacland_scroll0_w },
  119.     { 0x3a00, 0x3a01, pacland_scroll1_w },
  120.     { 0x3c00, 0x3c00, pacland_bankswitch_w },
  121.     { 0x4000, 0x5fff, MWA_ROM },
  122.     { 0x6800, 0x68ff, namcos1_wavedata_w }, /* PSG device, shared RAM */
  123.     { 0x6800, 0x6bff, sharedram1_w, &sharedram1 },
  124.     { 0x7000, 0x7000, MWA_NOP },    /* ??? */
  125.     { 0x7800, 0x7800, MWA_NOP },    /* ??? */
  126.     { 0x8000, 0x8800, pacland_halt_mcu_w },
  127.     { 0x9800, 0x9800, MWA_NOP },    /* ??? */
  128.     { 0x8000, 0xffff, MWA_ROM },
  129.     { -1 }    /* end of table */
  130. };
  131.  
  132. static struct MemoryReadAddress mcu_readmem[] =
  133. {
  134.     { 0x0000, 0x001f, hd63701_internal_registers_r },
  135.     { 0x0080, 0x00ff, MRA_RAM },
  136.     { 0x1000, 0x10ff, namcos1_wavedata_r },            /* PSG device, shared RAM */
  137.     { 0x1100, 0x113f, MRA_RAM }, /* PSG device */
  138.     { 0x1000, 0x13ff, sharedram1_r },
  139.     { 0x8000, 0x9fff, MRA_ROM },
  140.     { 0xc000, 0xc800, MRA_RAM },
  141.     { 0xd000, 0xd000, dsw0_r },
  142.     { 0xd000, 0xd001, dsw1_r },
  143.     { 0xd000, 0xd002, input_port_2_r },
  144.     { 0xd000, 0xd003, input_port_3_r },
  145.     { 0xf000, 0xffff, MRA_ROM },
  146.     { -1 }    /* end of table */
  147. };
  148.  
  149. static struct MemoryWriteAddress mcu_writemem[] =
  150. {
  151.     { 0x0000, 0x001f, hd63701_internal_registers_w },
  152.     { 0x0080, 0x00ff, MWA_RAM },
  153.     { 0x1000, 0x10ff, namcos1_wavedata_w, &namco_wavedata },        /* PSG device, shared RAM */
  154.     { 0x1100, 0x113f, namcos1_sound_w, &namco_soundregs }, /* PSG device */
  155.     { 0x1000, 0x13ff, sharedram1_w },
  156.     { 0x2000, 0x2000, MWA_NOP }, // ???? (w)
  157.     { 0x4000, 0x4000, MWA_NOP }, // ???? (w)
  158.     { 0x6000, 0x6000, MWA_NOP }, // ???? (w)
  159.     { 0x8000, 0x9fff, MWA_ROM },
  160.     { 0xc000, 0xc7ff, MWA_RAM },
  161.     { 0xf000, 0xffff, MWA_ROM },
  162.     { -1 }    /* end of table */
  163. };
  164.  
  165. static struct IOReadPort mcu_readport[] =
  166. {
  167.     { HD63701_PORT1, HD63701_PORT1, input_port_4_r },
  168.     { -1 }    /* end of table */
  169. };
  170.  
  171. static struct IOWritePort mcu_writeport[] =
  172. {
  173.     { HD63701_PORT1, HD63701_PORT1, pacland_coin_w },
  174.     { HD63701_PORT2, HD63701_PORT2, pacland_led_w },
  175.     { -1 }    /* end of table */
  176. };
  177.  
  178.  
  179.  
  180. INPUT_PORTS_START( pacland )
  181.     PORT_START      /* DSWA */
  182.     PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_B ) )
  183.     PORT_DIPSETTING(    0x03, DEF_STR( 3C_1C ) )
  184.     PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) )
  185.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  186.     PORT_DIPSETTING(    0x01, DEF_STR( 1C_2C ) )
  187.     PORT_DIPNAME( 0x04, 0x00, DEF_STR( Demo_Sounds ) )
  188.     PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
  189.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  190.     PORT_DIPNAME( 0x18, 0x00, DEF_STR( Coin_A ) )
  191.     PORT_DIPSETTING(    0x18, DEF_STR( 3C_1C ) )
  192.     PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
  193.     PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
  194.     PORT_DIPSETTING(    0x08, DEF_STR( 1C_2C ) )
  195.     PORT_DIPNAME( 0x60, 0x00, DEF_STR( Lives ) )
  196.     PORT_DIPSETTING(    0x20, "2" )
  197.     PORT_DIPSETTING(    0x00, "3" )
  198.     PORT_DIPSETTING(    0x40, "4" )
  199.     PORT_DIPSETTING(    0x60, "5" )
  200.     PORT_DIPNAME( 0x80, 0x00, "Test Mode" )
  201.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  202.     PORT_DIPSETTING(    0x80, DEF_STR( On ) )
  203.  
  204.     PORT_START      /* DSWB */
  205.     PORT_DIPNAME( 0x01, 0x00, "Start Level Select" )
  206.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  207.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  208.     PORT_DIPNAME( 0x02, 0x00, "Freeze" )
  209.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  210.     PORT_DIPSETTING(    0x02, DEF_STR( On ) )
  211.     PORT_BITX(    0x04, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Round Select", IP_KEY_NONE, IP_JOY_NONE )
  212.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  213.     PORT_DIPSETTING(    0x04, DEF_STR( On ) )
  214.     PORT_DIPNAME( 0x18, 0x00, DEF_STR( Difficulty ) )
  215.     PORT_DIPSETTING(    0x08, "Easy" )
  216.     PORT_DIPSETTING(    0x00, "Medium" )
  217.     PORT_DIPSETTING(    0x10, "Hard" )
  218.     PORT_DIPSETTING(    0x18, "Hardest" )
  219.     PORT_DIPNAME( 0xe0, 0x00, DEF_STR( Bonus_Life ) )
  220.     PORT_DIPSETTING(    0x00, "30K,80K,130K,300K,500K,1M" )
  221.     PORT_DIPSETTING(    0x20, "30K,100K,200K,400K,600K,1M" )
  222.     PORT_DIPSETTING(    0x40, "40K,100K,180K,300K,500K,1M" )
  223.     PORT_DIPSETTING(    0x60, "30K,80K,Every 100K" )
  224.     PORT_DIPSETTING(    0x80, "50K,150K,Every 200K" )
  225.     PORT_DIPSETTING(    0xa0, "30K,80K,150K" )
  226.     PORT_DIPSETTING(    0xc0, "40K,100K,200K" )
  227.     PORT_DIPSETTING(    0xe0, "40K" )
  228.  
  229.     PORT_START    /* Memory Mapped Port */
  230.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
  231.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
  232.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_COCKTAIL )
  233.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_COCKTAIL )
  234.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
  235.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
  236.     PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
  237.     PORT_DIPNAME( 0x80, 0x80, DEF_STR( Cabinet ) )
  238.     PORT_DIPSETTING(    0x80, DEF_STR( Upright ) )
  239.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  240.  
  241.     PORT_START    /* Memory Mapped Port */
  242.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
  243.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
  244.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
  245.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
  246.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_COCKTAIL )
  247.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
  248.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
  249.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
  250.  
  251.     PORT_START    /* MCU Input Port */
  252.     PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SPECIAL )    /* OUT:coin lockout */
  253.     PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SPECIAL )    /* OUT:coin counter 1 */
  254.     PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SPECIAL )    /* OUT:coin counter 2 */
  255.     PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
  256.     PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
  257.     PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
  258.     PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_COCKTAIL )
  259.     PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_COCKTAIL )
  260. INPUT_PORTS_END
  261.  
  262.  
  263.  
  264. static struct GfxLayout spritelayout =
  265. {
  266.     16,16,           /* 16*16 sprites */
  267.     256,               /* 256 sprites */
  268.     4,              /* 4 bits per pixel */
  269.     { 0, 4, 16384*8, 16384*8+4 },
  270.     { 0, 1, 2, 3, 8*8, 8*8+1, 8*8+2, 8*8+3,
  271.             16*8+0, 16*8+1, 16*8+2, 16*8+3, 24*8+0, 24*8+1, 24*8+2, 24*8+3 },
  272.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
  273.             32*8, 33*8, 34*8, 35*8, 36*8, 37*8, 38*8, 39*8 },
  274.     64*8    /* every sprite takes 256 bytes */
  275. };
  276.  
  277. static struct GfxLayout charlayout =
  278. {
  279.     8,8,    /* 8*8 characters */
  280.     512,    /* 512 characters */
  281.     2,    /* 2 bits per pixel */
  282.     { 0, 4 },    /* the bitplanes are packed in the same byte */
  283.     { 8*8, 8*8+1, 8*8+2, 8*8+3, 0, 1, 2, 3 },
  284.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  285.     16*8    /* every char takes 16 consecutive bytes */
  286. };
  287.  
  288. static struct GfxDecodeInfo gfxdecodeinfo[] =
  289. {
  290.     { REGION_GFX1, 0, &charlayout,              0, 256 },
  291.     { REGION_GFX2, 0, &charlayout,          256*4, 256 },
  292.     { REGION_GFX3, 0, &spritelayout,  256*4+256*4, 3*64 },
  293.     { REGION_GFX4, 0, &spritelayout,  256*4+256*4, 3*64 },
  294.     { -1 } /* end of array */
  295. };
  296.  
  297.  
  298. static struct namco_interface namco_interface =
  299. {
  300.     23920,    /* sample rate (approximate value) */
  301.     8,        /* number of voices */
  302.     100,    /* playback volume */
  303.     -1,        /* memory region */
  304.     0        /* stereo */
  305. };
  306.  
  307.  
  308. static struct MachineDriver machine_driver_pacland =
  309. {
  310.     /* basic machine hardware */
  311.     {
  312.         {
  313.             CPU_M6809,
  314.             1500000,    /* 1.500 Mhz (?) */
  315.             readmem,writemem,0,0,
  316.             interrupt,1
  317.         },
  318.         {
  319.             CPU_HD63701,    /* or compatible 6808 with extra instructions */
  320. //            6000000/4,        /* ??? */
  321.             6000000/3.9,        /* ??? */
  322.             mcu_readmem,mcu_writemem,mcu_readport,mcu_writeport,
  323.             interrupt,1
  324.         },
  325.     },
  326.     60,DEFAULT_REAL_60HZ_VBLANK_DURATION,
  327.     100,    /* we need heavy synching between the MCU and the CPU */
  328.     0,
  329.  
  330.     /* video hardware */
  331.     42*8, 32*8, { 3*8, 39*8-1, 2*8, 30*8-1 },
  332.     gfxdecodeinfo,
  333.     256,256*4+256*4+3*64*16,
  334.     pacland_vh_convert_color_prom,
  335.  
  336.     VIDEO_TYPE_RASTER | VIDEO_MODIFIES_PALETTE | VIDEO_UPDATE_AFTER_VBLANK,
  337.     0,
  338.     pacland_vh_start,
  339.     pacland_vh_stop,
  340.     pacland_vh_screenrefresh,
  341.  
  342.     /* sound hardware */
  343.     0,0,0,0,
  344.     {
  345.         {
  346.             SOUND_NAMCO,
  347.             &namco_interface
  348.         }
  349.     }
  350. };
  351.  
  352.  
  353. /***************************************************************************
  354.  
  355.   Game driver(s)
  356.  
  357. ***************************************************************************/
  358.  
  359. ROM_START( pacland )
  360.     ROM_REGION( 0x20000, REGION_CPU1 )    /* 128k for code */
  361.     ROM_LOAD( "pl5_01b.bin",  0x08000, 0x4000, 0xb0ea7631 )
  362.     ROM_LOAD( "pl5_02.bin",   0x0C000, 0x4000, 0xd903e84e )
  363.     /* all the following are banked at 0x4000-0x5fff */
  364.     ROM_LOAD( "pl1-3",        0x10000, 0x4000, 0xaa9fa739 )
  365.     ROM_LOAD( "pl1-4",        0x14000, 0x4000, 0x2b895a90 )
  366.     ROM_LOAD( "pl1-5",        0x18000, 0x4000, 0x7af66200 )
  367.     ROM_LOAD( "pl3_06.bin",   0x1c000, 0x4000, 0x2ffe3319 )
  368.  
  369.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for code */
  370.     ROM_LOAD( "pl1-7",        0x8000, 0x2000, 0x8c5becae ) /* sub program for the mcu */
  371.     ROM_LOAD( "pl1-mcu.bin",  0xf000, 0x1000, 0x6ef08fb3 ) /* microcontroller */
  372.  
  373.     ROM_REGION( 0x02000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  374.     ROM_LOAD( "pl2_12.bin",   0x00000, 0x2000, 0xa63c8726 )    /* chars */
  375.  
  376.     ROM_REGION( 0x02000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  377.     ROM_LOAD( "pl4_13.bin",   0x00000, 0x2000, 0x3ae582fd )
  378.  
  379.     ROM_REGION( 0x08000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  380.     ROM_LOAD( "pl1-9",        0x00000, 0x4000, 0xf5d5962b )    /* sprites */
  381.     ROM_LOAD( "pl1-10",       0x04000, 0x4000, 0xc7cf1904 )
  382.  
  383.     ROM_REGION( 0x08000, REGION_GFX4 | REGIONFLAG_DISPOSE )
  384.     ROM_LOAD( "pl1-8",        0x00000, 0x4000, 0xa2ebfa4a )
  385.     ROM_LOAD( "pl1-11",       0x04000, 0x4000, 0x6621361a )
  386.  
  387.     ROM_REGION( 0x1400, REGION_PROMS )
  388.     ROM_LOAD( "pl1-2.bin",    0x0000, 0x0400, 0x472885de )    /* red and green component */
  389.     ROM_LOAD( "pl1-1.bin",    0x0400, 0x0400, 0xa78ebdaf )    /* blue component */
  390.     ROM_LOAD( "pl1-3.bin",    0x0800, 0x0400, 0x80558da8 )    /* sprites lookup table */
  391.     ROM_LOAD( "pl1-5.bin",    0x0c00, 0x0400, 0x4b7ee712 )    /* foreground lookup table */
  392.     ROM_LOAD( "pl1-4.bin",    0x1000, 0x0400, 0x3a7be418 )    /* background lookup table */
  393. ROM_END
  394.  
  395. ROM_START( pacland2 )
  396.     ROM_REGION( 0x20000, REGION_CPU1 )    /* 128k for code */
  397.     ROM_LOAD( "pl6_01.bin",   0x08000, 0x4000, 0x4c96e11c )
  398.     ROM_LOAD( "pl6_02.bin",   0x0C000, 0x4000, 0x8cf5bd8d )
  399.     /* all the following are banked at 0x4000-0x5fff */
  400.     ROM_LOAD( "pl1-3",        0x10000, 0x4000, 0xaa9fa739 )
  401.     ROM_LOAD( "pl1-4",        0x14000, 0x4000, 0x2b895a90 )
  402.     ROM_LOAD( "pl1-5",        0x18000, 0x4000, 0x7af66200 )
  403.     ROM_LOAD( "pl1-6",        0x1c000, 0x4000, 0xb01e59a9 )
  404.  
  405.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for code */
  406.     ROM_LOAD( "pl1-7",        0x8000, 0x2000, 0x8c5becae ) /* sub program for the mcu */
  407.     ROM_LOAD( "pl1-mcu.bin",  0xf000, 0x1000, 0x6ef08fb3 ) /* microcontroller */
  408.  
  409.     ROM_REGION( 0x02000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  410.     ROM_LOAD( "pl0_12.bin",   0x00000, 0x2000, 0xc8cb61ab )    /* chars */
  411.  
  412.     ROM_REGION( 0x02000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  413.     ROM_LOAD( "pl1-13",       0x00000, 0x2000, 0x6c5ed9ae )
  414.  
  415.     ROM_REGION( 0x08000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  416.     ROM_LOAD( "pl1_09b.bin",  0x00000, 0x4000, 0x80768a87 )    /* sprites */
  417.     ROM_LOAD( "pl1_10b.bin",  0x04000, 0x4000, 0xffd9d66e )
  418.  
  419.     ROM_REGION( 0x08000, REGION_GFX4 | REGIONFLAG_DISPOSE )
  420.     ROM_LOAD( "pl1_08.bin",   0x00000, 0x4000, 0x2b20e46d )
  421.     ROM_LOAD( "pl1_11.bin",   0x04000, 0x4000, 0xc59775d8 )
  422.  
  423.     ROM_REGION( 0x1400, REGION_PROMS )
  424.     ROM_LOAD( "pl1-2.bin",    0x0000, 0x0400, 0x472885de )    /* red and green component */
  425.     ROM_LOAD( "pl1-1.bin",    0x0400, 0x0400, 0xa78ebdaf )    /* blue component */
  426.     ROM_LOAD( "pl1-3.bin",    0x0800, 0x0400, 0x80558da8 )    /* sprites lookup table */
  427.     ROM_LOAD( "pl1-5.bin",    0x0c00, 0x0400, 0x4b7ee712 )    /* foreground lookup table */
  428.     ROM_LOAD( "pl1-4.bin",    0x1000, 0x0400, 0x3a7be418 )    /* background lookup table */
  429. ROM_END
  430.  
  431. ROM_START( pacland3 )
  432.     ROM_REGION( 0x20000, REGION_CPU1 )    /* 128k for code */
  433.     ROM_LOAD( "pln1-1",       0x08000, 0x4000, 0xf729fb94 )
  434.     ROM_LOAD( "pln1-2",       0x0C000, 0x4000, 0x5c66eb6f )
  435.     /* all the following are banked at 0x4000-0x5fff */
  436.     ROM_LOAD( "pl1-3",        0x10000, 0x4000, 0xaa9fa739 )
  437.     ROM_LOAD( "pl1-4",        0x14000, 0x4000, 0x2b895a90 )
  438.     ROM_LOAD( "pl1-5",        0x18000, 0x4000, 0x7af66200 )
  439.     ROM_LOAD( "pl1-6",        0x1c000, 0x4000, 0xb01e59a9 )
  440.  
  441.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for code */
  442.     ROM_LOAD( "pl1-7",        0x8000, 0x2000, 0x8c5becae ) /* sub program for the mcu */
  443.     ROM_LOAD( "pl1-mcu.bin",  0xf000, 0x1000, 0x6ef08fb3 ) /* microcontroller */
  444.  
  445.     ROM_REGION( 0x02000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  446.     ROM_LOAD( "pl1-12",       0x00000, 0x2000, 0xc159fbce )    /* chars */
  447.  
  448.     ROM_REGION( 0x02000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  449.     ROM_LOAD( "pl1-13",       0x00000, 0x2000, 0x6c5ed9ae )
  450.  
  451.     ROM_REGION( 0x08000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  452.     ROM_LOAD( "pl1_09b.bin",  0x00000, 0x4000, 0x80768a87 )    /* sprites */
  453.     ROM_LOAD( "pl1_10b.bin",  0x04000, 0x4000, 0xffd9d66e )
  454.  
  455.     ROM_REGION( 0x08000, REGION_GFX4 | REGIONFLAG_DISPOSE )
  456.     ROM_LOAD( "pl1_08.bin",   0x00000, 0x4000, 0x2b20e46d )
  457.     ROM_LOAD( "pl1_11.bin",   0x04000, 0x4000, 0xc59775d8 )
  458.  
  459.     ROM_REGION( 0x1400, REGION_PROMS )
  460.     ROM_LOAD( "pl1-2.bin",    0x0000, 0x0400, 0x472885de )    /* red and green component */
  461.     ROM_LOAD( "pl1-1.bin",    0x0400, 0x0400, 0xa78ebdaf )    /* blue component */
  462.     ROM_LOAD( "pl1-3.bin",    0x0800, 0x0400, 0x80558da8 )    /* sprites lookup table */
  463.     ROM_LOAD( "pl1-5.bin",    0x0c00, 0x0400, 0x4b7ee712 )    /* foreground lookup table */
  464.     ROM_LOAD( "pl1-4.bin",    0x1000, 0x0400, 0x3a7be418 )    /* background lookup table */
  465. ROM_END
  466.  
  467. ROM_START( paclandm )
  468.     ROM_REGION( 0x20000, REGION_CPU1 )    /* 128k for code */
  469.     ROM_LOAD( "pl1-1",        0x08000, 0x4000, 0xa938ae99 )
  470.     ROM_LOAD( "pl1-2",        0x0C000, 0x4000, 0x3fe43bb5 )
  471.     /* all the following are banked at 0x4000-0x5fff */
  472.     ROM_LOAD( "pl1-3",        0x10000, 0x4000, 0xaa9fa739 )
  473.     ROM_LOAD( "pl1-4",        0x14000, 0x4000, 0x2b895a90 )
  474.     ROM_LOAD( "pl1-5",        0x18000, 0x4000, 0x7af66200 )
  475.     ROM_LOAD( "pl1-6",        0x1c000, 0x4000, 0xb01e59a9 )
  476.  
  477.     ROM_REGION( 0x10000, REGION_CPU2 )    /* 64k for code */
  478.     ROM_LOAD( "pl1-7",        0x8000, 0x2000, 0x8c5becae ) /* sub program for the mcu */
  479.     ROM_LOAD( "pl1-mcu.bin",  0xf000, 0x1000, 0x6ef08fb3 ) /* microcontroller */
  480.  
  481.     ROM_REGION( 0x02000, REGION_GFX1 | REGIONFLAG_DISPOSE )
  482.     ROM_LOAD( "pl1-12",       0x00000, 0x2000, 0xc159fbce )    /* chars */
  483.  
  484.     ROM_REGION( 0x02000, REGION_GFX2 | REGIONFLAG_DISPOSE )
  485.     ROM_LOAD( "pl1-13",       0x00000, 0x2000, 0x6c5ed9ae )
  486.  
  487.     ROM_REGION( 0x08000, REGION_GFX3 | REGIONFLAG_DISPOSE )
  488.     ROM_LOAD( "pl1-9",        0x00000, 0x4000, 0xf5d5962b )    /* sprites */
  489.     ROM_LOAD( "pl1-10",       0x04000, 0x4000, 0xc7cf1904 )
  490.  
  491.     ROM_REGION( 0x08000, REGION_GFX4 | REGIONFLAG_DISPOSE )
  492.     ROM_LOAD( "pl1-8",        0x00000, 0x4000, 0xa2ebfa4a )
  493.     ROM_LOAD( "pl1-11",       0x04000, 0x4000, 0x6621361a )
  494.  
  495.     ROM_REGION( 0x1400, REGION_PROMS )
  496.     ROM_LOAD( "pl1-2.bin",    0x0000, 0x0400, 0x472885de )    /* red and green component */
  497.     ROM_LOAD( "pl1-1.bin",    0x0400, 0x0400, 0xa78ebdaf )    /* blue component */
  498.     ROM_LOAD( "pl1-3.bin",    0x0800, 0x0400, 0x80558da8 )    /* sprites lookup table */
  499.     ROM_LOAD( "pl1-5.bin",    0x0c00, 0x0400, 0x4b7ee712 )    /* foreground lookup table */
  500.     ROM_LOAD( "pl1-4.bin",    0x1000, 0x0400, 0x3a7be418 )    /* background lookup table */
  501. ROM_END
  502.  
  503.  
  504.  
  505. GAMEX( 1984, pacland,  0,       pacland, pacland, 0, ROT0, "Namco", "Pac-Land (set 1)", GAME_NO_COCKTAIL )
  506. GAMEX( 1984, pacland2, pacland, pacland, pacland, 0, ROT0, "Namco", "Pac-Land (set 2)", GAME_NO_COCKTAIL )
  507. GAMEX( 1984, pacland3, pacland, pacland, pacland, 0, ROT0, "Namco", "Pac-Land (set 3)", GAME_NO_COCKTAIL )
  508. GAMEX( 1984, paclandm, pacland, pacland, pacland, 0, ROT0, "[Namco] (Bally Midway license)", "Pac-Land (Midway)", GAME_NO_COCKTAIL )
  509.